package com.itya.weatherback.domain.getWeatherAli.vo;

// 文件路径: C:\Users\29285\Desktop\weatherBack\src\main\java\com\itya\weatherback\domain\getWeatherAli\HourData.java
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
@JsonIgnoreProperties(ignoreUnknown = true)
@TableName("weather_24h_hourly")
public class HourData {

    private int id;


    @JSONField(name = "od21")
    private String hour;          // 小时（od21，如"21"表示21点）

    @JSONField(name = "od22")
    private double temperature;   // 温度℃（od22）

    @JSONField(name = "od23")
    private int windDegree;       // 风向角度°（od23，0~360）

    @JSONField(name = "od24")
    private String windDirection; // 风向文字（od24，如"南风"）

    @JSONField(name = "od25")
    private int windPower;        // 风力等级（od25）

    @JSONField(name = "od26")
    private double precipitation;    // 降水状态（od26，0=无，1=雨，2=雪）

    @JSONField(name = "od27")
    private int humidity;         // 湿度%（od27）

    private int cityWeatherId;

    private String weatherIcon;


    public static String getWeatherIcon(HourData hourData) {
        if (hourData == null) return "unknown";

        // 1. 降水状态（最高优先级）
        if (hourData.getPrecipitation() == 1) return "rain";
        if (hourData.getPrecipitation() == 2) return "snow";

        // 2. 风力等级（次优先级）
        if (hourData.getWindPower() >= 3) return "windy";

        // 3. 温度判断（中等优先级）
        if (hourData.getTemperature() > 35) return "sunny";  // 高温晴天
        if (hourData.getTemperature() < 25) return "cloudy";  // 低温多云

        // 4. 风向（最低优先级）
        String windDir = hourData.getWindDirection();
        if (windDir != null && !windDir.isEmpty()) {
            if (windDir.contains("风")) return "windy";  // 有风向描述，默认风图标
        }

        // 默认晴天
        return "sunny";
    }

    public String getWeatherIcon() {
        return getWeatherIcon(this); // 调用上面定义的静态方法
    }

    public void setHour(String hour) {
        // 添加 ":00" 后缀
        this.hour = (hour != null && !hour.isEmpty()) ? hour + ":00" : "未知:00";
    }
}

